package com.correo.controladores.server.event;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;

import com.correo.database.beans.CasillaCorreoBean;
import com.correo.database.beans.OfficeBean;
import com.correo.database.beans.UserBean;
import com.correo.exceptions.server.ModifyException;
import com.correo.exceptions.server.RefreshException;
import com.correo.modelo.server.ModelServer;
import com.correo.vista.server.windows.AdministracionCorreo;

public class ActionListenerModificacion implements ActionListener {

	private AdministracionCorreo administracionCorreo;
	private ModelServer model;

	public ActionListenerModificacion(AdministracionCorreo correoServer,
			ModelServer model) {
		this.model = model;
		this.administracionCorreo = correoServer;
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		try {
			switch (administracionCorreo.getTab()) {
			case AdministracionCorreo.TAB_CASILLA_CORREO:
				
				CasillaCorreoBean casilla = (CasillaCorreoBean) administracionCorreo.getCasillaCorreoSelectionTabla().get(0);
				administracionCorreo.getDialogCasillaCorreo(casilla,true,false).setVisible(true);
				if (administracionCorreo.getDialogCasillaCorreo(null,true,false).isBotonOk()) {
					System.out.println("Actualizar usuario de la base de datos");
					this.model.getModelCasillaCorreo().modify(administracionCorreo.getDialogCasillaCorreo(null,true,false).getData());
					administracionCorreo.getDialogCasillaCorreo(null,true,false).setActualizarTabla(model.getModelCasillaCorreo().refresh());
					administracionCorreo.actualizarTablaUsuario(this.model.getModelUser().refresh());
				}
				break;
			
			case AdministracionCorreo.TAB_USUARIO:
				UserBean userBean = (UserBean)administracionCorreo.getUserSelectionTabla().get(0);
				//administracionCorreo.getDialogOficce((OfficeBean)administracionCorreo.getOficceSelectionTabla().get(0));
				administracionCorreo.getDialogUser(userBean,true,false).setVisible(true);
				if (administracionCorreo.getDialogUser(userBean,true,false).isButtonOk()) {
					System.out.println("Actualizar usuario de la base de datos");
					this.model.getModelUser().modify(administracionCorreo.getDialogUser(null,true,false).getData());
					
					administracionCorreo.getDialogUser(userBean,true,false).setActualizarTabla(this.model.getModelUser().refresh());
				}
				
				break;
			case AdministracionCorreo.TAB_OFICINA_CORREO:
				OfficeBean office = (OfficeBean)administracionCorreo.getOficceSelectionTabla().get(0);
				//administracionCorreo.getDialogOficce((OfficeBean)administracionCorreo.getOficceSelectionTabla().get(0));
				administracionCorreo.getDialogOficce(office,true,false).setVisible(true);
				if (administracionCorreo.getDialogOficce().isButtonOK()) {
					System.out.println("Actualizar usuario de la base de datos");
					this.model.getModelOficce().modify(administracionCorreo.getDataDialogOficce());
					
					administracionCorreo.getDialogOficce(office,true,false).setActualizarTabla(this.model.getModelOficce().refresh());
					administracionCorreo.actualizarTablaCasillaCorreo(this.model.getModelCasillaCorreo().refresh());
					
				}
				System.out.println("borro oficina de correo");
				break;
			case AdministracionCorreo.TAB_RELACION_CONFIANZA:
				System.out.println("borro usuario de la base de datos");
				break;
			case AdministracionCorreo.TAB_USUARIO_SOCKET:
				System.out.println("borro usuario del servidor socket");
				break;
			default:
				break;
			}
		} catch (ModifyException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (RefreshException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		} catch (SQLException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		} catch (ClassNotFoundException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}catch (Exception e2) {
			e2.printStackTrace();
		}
	}
}
